package cn.edu.jxnu.service.impl;

import cn.edu.jxnu.config.WechatAccountConfig;
import cn.edu.jxnu.dto.OrderDTO;
import cn.edu.jxnu.service.PushMessageService;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * 推送消息
 * 
 * 
 * 每个订单更新的地方都可以调用这个服务，发送模板消息
 * 
 * @author 梦境迷离.
 * @version V1.0
 * @time 2018年4月24日
 */
@Service
@Slf4j
public class PushMessageServiceImpl implements PushMessageService {

	@Autowired
	private WxMpService wxMpService;

	@Autowired
	private WechatAccountConfig accountConfig;

	@Override
	public void orderStatus(OrderDTO orderDTO) {
		WxMpTemplateMessage templateMessage = new WxMpTemplateMessage();
		templateMessage.setTemplateId(accountConfig.getTemplateId().get("orderStatus"));
		templateMessage.setToUser(orderDTO.getBuyerOpenid());

		List<WxMpTemplateData> data = Arrays.asList(new WxMpTemplateData("first", "亲，请记得收货。"),
				new WxMpTemplateData("keyword1", "微信点餐"), new WxMpTemplateData("keyword2", "18868812345"),
				new WxMpTemplateData("keyword3", orderDTO.getOrderId()),
				new WxMpTemplateData("keyword4", orderDTO.getOrderStatusEnum().getMessage()),
				new WxMpTemplateData("keyword5", "￥" + orderDTO.getOrderAmount()),
				new WxMpTemplateData("remark", "欢迎再次光临！"));
		templateMessage.setData(data);
		try {
			wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
		} catch (WxErrorException e) {
			log.error("【微信模版消息】发送失败, {}", e);
		}
	}
}
